Cloud computing services are generally classified into three “layers”, or types of service. These layers, which typically are referred to as conceptually “sitting on top” of one another are, from bottom to top, Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS) and Software-as-a-Service (SaaS).
IaaS refers to providing virtual computing infrastructure (e.g., cloud-computing infrastructure) resources, such as virtual processors, virtual volatile memory (e.g., random access memory (RAM)), virtual non-volatile memory (e.g., disk storage), virtual networking, etc. For instance, an IaaS provider may own and manage a set of physical computing resources (e.g., in a data center network) that are virtualized through a virtualization layer (which can also be referred to as a hypervisor, a hypervisor server, a virtualization server, etc.). A hypervisor (which can also be referred to as a virtual machine monitor (VMM)) can be implemented as computer software, firmware and/or hardware, which can be used to create (provision) and run virtual machines. A computer on which a hypervisor is implemented and is used to run (host) one or more virtual machines can be referred to as a host machine. Each virtual machine implemented on a hypervisor may be referred to as a guest machine of that host machine.
Clients (users) of an IaaS provider's services can access the virtualized computing resources to implement (provision) virtual servers and/or virtual computers (which can also be referred to, collectively, as virtual machines) including installing (implementing) desired operating systems and/or user software applications on the virtual machines. Such virtualized computing resources can also be used to implement (provision) virtual private networks (e.g., virtual local area networks (VLANs)) and virtual (cloud) data storage.
PaaS refers to providing virtual computing platforms over a network, such as the Internet or private computing networks, as two examples. PaaS providers may provide their customers (users) with virtual computing platforms that include specific, respective operating systems (O/Ss) and runtime environment components. Such PaaS virtual computing platforms can be used for developing and deploying software applications, application hosting, data storage and/or collaboration tools, as some examples.
SaaS refers to providing end-user software applications (services) over a network (e.g., cloud-based application or services). For instance, SaaS providers may provide entertainment and/or business applications to end-users over the Internet using, for example, IaaS and PaaS infrastructures for delivering those services to their customers (users). Some examples of SaaS applications are media streaming (e.g., movies and/or music), business conferencing tools and business productivity (such as word processors, spreadsheet editors, and so forth).
One challenge when providing cloud computing services is efficiently using virtualized computing resources that are provided at an IaaS layer. For example, when provisioning a virtual network using virtualized computing resources that are provided from a hypervisor (virtualization server), it is desirable to provision those resources, such as a number of virtual port groups (each having a number of virtual ports) provisioned, based on expected usage of the virtual network (e.g., an anticipated number of virtual workloads that will be connected at a given time). Over provisioning (e.g., provisioning too many virtual port groups) may result in inefficient use of the available virtual computing resources, as provisioned resources may sit idle.
Likewise, virtual computing resources can be underutilized if a virtual network has available virtual computing resources and available network addresses (e.g., Internet Protocol (IP) addresses) but does not have any available virtual ports to (virtually) connect additional virtual workloads (virtual machines) to the virtual network. Such underutilization can result from a number of factors, such as changes in the available virtual computing resources, the specific configuration of virtual switches that are used to implement the virtual ports of the virtual network, changes in the number of virtual workloads provisioned on a given virtual network, and so forth. Accordingly, alternative approaches for provisioning virtual ports are desirable.